package com.wzl.jdbc.config;

import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;

import java.util.Arrays;
import java.util.Collection;

/**
 * 范围分表算法
 *
 * @author weizhongli
 * @since 1.0, 2024/05/14 10:03
 */
public class MyTableRangeShardingAlgorithm implements RangeShardingAlgorithm<Integer> {

    @Override
    public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Integer> shardingValue) {


        String logicTableName = shardingValue.getLogicTableName();
        return Arrays.asList(logicTableName+"_1",logicTableName+"_2");



//        Set<String> result = new LinkedHashSet<>();
//        // 空指针检查
//        if (shardingValue == null || shardingValue.getValueRange() == null) {
//            // 可以在这里处理空值情况，例如返回一个默认的表集合或者抛出异常
//            return result;
//        }
//
//        Integer lower = shardingValue.getValueRange().lowerEndpoint();
//        Integer upper = shardingValue.getValueRange().upperEndpoint();
//
//        // 创建一个Set来存储所有可能的余数
//        Set<String> suffixes = new HashSet<>();
//        for (int i = lower; i <= upper; i++) {
//            suffixes.add(String.valueOf(i % 3));
//        }
//
//        // 使用正则表达式来匹配以特定数字结尾的表名
//        for (String tableName : collection) {
//            for (String suffix : suffixes) {
//                if (tableName.matches(".*" + Pattern.quote(suffix) + "$")) { // 使用$确保匹配的是结尾部分
//                    result.add(tableName);
//                    break; // 找到匹配项后，无需再检查其他余数
//                }
//            }
//        }
//        return result;
    }
}
